﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Proyecto7CAD;
using System.Data;
using System.Configuration;
using System.Data.Sql;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Collections;

namespace ENProyecto7
{
    public class ENMision
    {
        // Variables
        private int id;
        private string nombre;
        private int mapa;
        private int inicio;
        private int objetivo;
        private int dificultad;
        private string descripcion;
        private int taberna;
        private MisionCAD obj;

        // constructor
        public ENMision()
        {
            descripcion = null;
            taberna = -1;
            obj = new MisionCAD();
        }
        // constructor sobrecargado
        public ENMision(int idM, string nombreM, int mapaM, int inicioM, int objetivoM, int dificultadM, string descripcionM = null, int tabernaM = -1)
        {
            id = idM;
            nombre = nombreM;
            mapa = mapaM;
            inicio = inicioM;
            objetivo = objetivoM;
            dificultad = dificultadM;
            descripcion = descripcionM;
            taberna = tabernaM;
            obj = new MisionCAD();
        }

        // Acceso / Asignacion de variables
        public int IdMision
        {
            get { return id; }
            set { id = value; }
        }

        public string NombreMision
        {
            get { return nombre; }
            set { nombre = value; }
        }

        public int MapaMision
        {
            get { return mapa; }
            set { mapa = value; }
        }

        public int InicioMision
        {
            get { return inicio; }
            set { inicio = value; }
        }

        public int ObjetivoMision
        {
            get { return objetivo; }
            set { objetivo = value; }
        }

        public int DificultadMision
        {
            get { return dificultad; }
            set { dificultad = value; }
        }

        public string DescripcionMision
        {
            get { return descripcion; }
            set { descripcion = value; }
        }

        public int TabernaMision
        {
            get { return taberna; }
            set { taberna = value; }
        }

        // Metodos
        public bool insertarMision()
        {
            try
            {
                return obj.insertarMision(nombre, mapa, descripcion, inicio, objetivo, dificultad, taberna);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public bool borrarMision()
        {
            try
            {
                return obj.borrarMision(id);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public void obtenerMision()
        {
            try 
            {
                DataTable mision = obj.obtenerMision(id);
                nombre = mision.Rows[0][1].ToString();                
                mapa = int.Parse(mision.Rows[0][2].ToString());
                descripcion = mision.Rows[0][3].ToString();
                inicio = int.Parse(mision.Rows[0][4].ToString());
                objetivo = int.Parse(mision.Rows[0][5].ToString());
                dificultad = int.Parse(mision.Rows[0][6].ToString());
                if (mision.Rows[0][7] == null)
                    taberna = -1;
                else
                    taberna = int.Parse(mision.Rows[0][7].ToString());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public DataTable obtenerMisionNombre(string nom_des)
        {
            try 
            {
                return obj.obtenerMisionNombre(nombre, nom_des);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public bool editarMision()
        {
            try
            {
                return obj.editarMision(id, nombre, mapa, descripcion, inicio, objetivo, dificultad, taberna);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public DataSet obtenerMisiones()
        {
            try
            {
                return obj.obtenerMisiones();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public SqlDataReader obtenerMisionesSDR()
        {
            try
            {
                return obj.obtenerMisionesSDRCAD();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public SqlDataReader obtenerTabernaMision()
        {
            try
            {
                return obj.obtenerTabernaMisionCAD(id);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public SqlDataReader obtenerMapaMision()
        {
            try
            {
                return obj.obtenerMapaMisionCAD(id);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}
